
package main.old.new_2023.last.month_11;


import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * @Description: todo 2103. 环和杆
 * 总计有 n 个环，环的颜色可以是红、绿、蓝中的一种。这些环分别穿在 10 根编号为 0 到 9 的杆上。
 * 给你一个长度为 2n 的字符串 rings ，表示这 n 个环在杆上的分布。rings 中每两个字符形成一个 颜色位置对 ，用于描述每个环：
 * 第 i 对中的 第一个 字符表示第 i 个环的 颜色（'R'、'G'、'B'）。
 * 第 i 对中的 第二个 字符表示第 i 个环的 位置，也就是位于哪根杆上（'0' 到 '9'）。
 * 例如，"R3G2B1" 表示：共有 n == 3 个环，红色的环在编号为 3 的杆上，绿色的环在编号为 2 的杆上，蓝色的环在编号为 1 的杆上。
 * 找出所有集齐 全部三种颜色 环的杆，并返回这种杆的数量。
 *
 * todo 117. 填充每个节点的下一个右侧节点指针 II
 * 给定一个二叉树：
 * struct Node {
 *   int val;
 *   Node *left;
 *   Node *right;
 *   Node *next;
 * }
 * 填充它的每个 next 指针，让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点，则将 next 指针设置为 NULL 。
 * 初始状态下，所有 next 指针都被设置为 NULL 。
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2023/6/
 * @Param:
 * @return:
 **/
public class Solution1103 {

    // 环和杆
    public int countPoints(String rings) {
        //存放杆子的颜色值
        Map<Integer, Set<Character>> colorMap = new HashMap<>();
        char[] chars = rings.toCharArray();
        for (int i = 0;i<chars.length;i++){
            char color = chars[i];
            i +=1;
            int math = chars[i];
            if (colorMap.containsKey(math)){
                Set<Character> temp = colorMap.get(math);
                temp.add(color);
                colorMap.put(math,temp);
            }else {
                Set<Character> temp = new HashSet<>();
                temp.add(color);
                colorMap.put(math,temp);
            }
        }
        long count = colorMap.values().stream().filter(m -> m.size() > 2).count();
        return (int)count;
    }


    public static void main(String[] args) {
        Solution1103 test = new Solution1103();

    }
}
